======apt-get et confrères : la gestion de paquets sous Debian======


Après avoir installé votre système Debian il vous faudra le faire vivre : mises à jour et installation/désinstallation de logiciels sont des tâches courantes. Pour les mener à bien Debian dispose d'outils très efficaces au premier rang desquels vient APT.


====apt : Les fichiers de configuration importants====


===sources.list===

Le premier fichier auquel vous devez vous intéresser concernant la gestion de paquets sous Debian est **/etc/apt/sources.list** car c'est dans ce fichier que sont inscrites les sources de téléchargement qu'apt va utiliser. Ces sources se présentent sous la forme :\\ 
deb “adresse_du_dépôt” “distribution” “type1” “type2” pour les paquets .deb et\\ 
deb-src “adresse_du_dépôt” “distribution” “type1” “type2” pour les dépôt contenant les sources des logiciels.
Concrètement cela donne pour une Debian “etch” sur laquelle on veut avoir accès à tous les types de logiciels :\\ 

deb %%http://ftp2.fr.debian.org/debian/etch%% stable main contrib non-free\\ 

Les types correspondent au statut des paquets par rapport à l'éthique Debian, les paquets de “main” étant totalement gérés par les développeurs de debian et libres selon les critères de Debian, “contrib” regroupe des paquets libres mais dont certaines dépendances ne le sont pas, et “non-free” s'applique aux paquets soumis à des licences spécifiques (commercial, copyright, illégal dans certains pays...). Une dernière catégorie “restricted” peut apparaître sur certaines sources pour signifier des paquets propriétaires soumis à des conditons particulières (payant ...etc).

Il est également possible d'ajouter le contenu d'un cdrom à la base de paquet pour faire des installations hors-ligne, il vous sera demandé de l'insérer en ca sde besoin. La commande pour ajouter un cdrom est **apt-cdrom add** avec le cd dans le lecteur.


Les sources indispensables sont ajoutées dès l'installation, en particulier les sources qui concernent les mises à jour de sécurité. Vous pouvez prendre modèle sur la syntaxe de ces sources. À noter qu'un caractère # au début d'une ligne désactive la ligne, on dit alors qu'elle est “commentée”.

{{ presentation:sourcelist.png?580 }}

===/etc/apt/preferences et /etc/apt/apt.conf===

nota : ces fichiers peuvent ne pas exister par défaut, il suffit alors de les créer.

Dans ces fichiers vous pouvez assigner un degré de priorité à un niveau donné de stabilité pour l'ensemble de vos paquets ou certains seulement. Le fichier de préférences est simple par sa syntaxe mais complexe dans les conséquences qu'il peut entraîner, à utiliser avec prudence et documentation !
Un exemple de blocage du paquet “gimp” à sa version 2.3*

Package: gimp\\ 
Pin: 2.3*\\ 
Pin-Priority: 1000\\ 


:!: Attention à ne pas trop "jouer" avec des priorités de paquets car on peut entraîner de sérieux problèmes de dépendances...

Pour donner globalement le préférence à un niveau de stabilité sur l'ensemble du système il faut créer un fichier apt.conf dans /etc/apt qui aura le contenu suivant pour un système privilégiant "testing" :\\ 

APT::Default-Release "testing";\\ 

Cette façon de faire évite de se retrouver au fil des mises à jour avec un système en unstable juste parce qu'on a ajouté une source unstable dans sources.list, celà n'empêche pas d'installer des paquets unstable avec la commande **apt-get -t unstable install nom_du_paquet**
====apt en ligne de commande====

Une fois votre sources.list mis  en ordre, vous pouvez rafraîchir la base de donnée des paquets avec la commande **apt-get update**\\
Pour installer les mises à jour disponibles c'est **apt-get upgrade**\\
Pour (dés)installer un paquet particulier c'est **apt-get install nom_du_paquet**\\ et **apt-get remove (%%--%%purge) nom_du_paquet** où l'option facultative “%%--%%purge” indique d'enlever également les fichiers de configurations du logiciel à désinstaller. À noter que l'extention des paquets .deb n'est pas nécessaire.

L'installation de plusieurs paquets est possible en indiquant leurs nom à la suite séparés par un espace, et l'installation et désinstallation en une seule commande également avec **apt-get install gimp scribus-** qui installera gimp et désinstallera scribus (notez le "-" après scribus).

Il est à noter que apt-get se charge de gérer les dépendances et vous indiquera les paquets supplémentaires qui seront automatiquement installés pour les satisfaire. En revanche il ne prend pas en charge les paquets “recommandés” et “suggérés”

{{ apt-get1.png?580 }}

Vous voilà maître des commandes de base, il vous reste à savoir rechercher un paquet avec **apt-cache search nom_du_paquet**\\ 
Grace à des additifs vous pouvez étendre les fonctions de apt, si vous installez par exemple le paquet “apt-show-versions” vous aurez accès à la commande\\ **apt-show-versions -u** qui listera tout les paquets disponibles pour mise à jour.


À utiliser avec prudence et dicernement, la commande **apt-get dist-upgrade** fera passer l'ensemble de votre système à la version directement supérieure (stable(Etch)>testing(lenny) ou testing>unstable(sid) ...etc).
Il est maintenant conseillé d'utiliser [[#Aptitude : La loi de l'évolution appliquée à la gestion de paquets .deb|Aptitude]] pour cette usage.
Sauvegarde indispensable avant l'exécution de ce genre de mise à niveau !


Pour connaître l'ensemble des usages possibles de apt-get référez vous au manuel en tapant **man apt-get** dans une console. Ou bien lisez le [[http://www.debian.org/doc/manuals/apt-howto/index.fr.html|apt how-to]]. Vous découvrirez que apt sait réparer des paquets dont les dépendances sont “brisées” ou lister et désinstaller des dépendances laissées orphelines et inutiles lors d'une désinstallation précédente.

Enfin un dernier avantage de apt est sa gestion de la signature des paquets : à chaque source correspond une signature numérique garantissant l'authenticité des paquets, si cette clé d'identification est absente de votre système vous en avertira par la mention “The following packages cannot be authenticated!” ou “aucune clé publique n'est disponible...”. Dans ce cas il vous faut installer la clé d'identification de la source d'installation soit via le paquet “debian-archive-keyring” qui contient les clés des dépôts officiels et “debian-multimedia-keyring” pour les paquet de http://www.debian-multimedia.org , soit en important la clé manuellement pour des sources plus “exotiques”. L'exemple de la source Google©® :

Une fois ajouté au sources.list  deb %%http://dl.google.com/linux/deb/%% stable non-free

il faut taper dans une console en root 

**wget -q %%http://dl.google.com/linux/linux_signing_key.pub%% -O- | sudo apt-key add -**\\ 

en faisant bien attention aux tirets, ensuite un apt-get update rendra les paquets de cette source disponibles à l'installation.

:!: __Attention__ :!: car en ajoutant un dépôt de logiciels à votre sources.list et surtout en ajoutant sa clé vous accordez totale confiance à tous les paquets qui s'y trouvent ! Donc prudence avec les fichiers sources.list récupérés sur des blogs ou sites perso !

L'outils [[http://www1.apt-get.org/search.php|Unofficial Apt Repository]] vous permettra de trouver des sources de manière plus sûr, en plus la syntaxe est déjà prête à l'emploi : une recherche de “skype” pour l'architesture i386 renvoie directement la ligne “deb %%http://download.skype.com/linux/repos/debian/%% stable non-free” prête à être copiée dans le sources.list. À garder en marque-page donc ;-) .

  *[[commandes_apt-get|Les principales commandes]].

====apt en mode graphique====
[[#aptgraph]]La ligne de commande c'est rapide et efficace, mais une belle interface graphique c'est plus confortable ! Apt en possède plusieurs dont les deux plus courantes sont [[Synaptic]] (plutôt lié à [[environnement:gnome:presentation|Gnome]]) et [[Adept]] (plutôt lié à [[environnement:kde:presentation|KDE]]). Les deux peuvnt être installées sur le même système à condition de ne pas être utilisé en même temps. En revanche aucun problème à désintaller dans Adept un paquet installé dans Synaptic : c'est toujours Apt qui fait le boulot ! Adept comporte un “update-notifier” qui vous avertira des mises à jour et les installera en deux clics, Synaptic dispose de la même fonction via un applet Gnome. Une fois installé grace à **apt-get install synaptic (adept)** ils se trouveront dans le menu applications à la rubrique “système”. Ils permettent d'accéder à beaucoup de fonction de apt, je vous laisse explorer les menus ;-) .

{{ presentation:synaptic.png?580 }}

{{ presentation:adept.png?580 }}

{{ presentation:adeptmanager.png?580 }}

====Aptitude : La loi de l'évolution appliquée à la gestion de paquets .deb====

Apt est un outils puissant, souple et... ancien. La relève est déjà en ordre de marche sous le nom de [[http://www.debian.org/doc/manuals/reference/ch-package.fr.html|Aptitude]]. Il s'agit d'une interface en mode texte ou en ligne de commande basé sur apt, mais qui ajoute une dose de finesse supplémentaire dans la gestion des dépendances et des paquets “conseillés” et “suggérés” lors d'une installation. Aptitude garde en mémoire les paquets installés manuellement et sait purger les dépendances orphelines ou permet de choisir le niveau de stabilité auquel un paquet est installé **aptitude install gimp/unstable **installera gimp depuis une source "unstable" (présente dans le sources.list bien sûr).
Il s'intalle avec apt **apt-get aptitude** et s'utilise avec une syntaxe similaire à apt-get (install, remove, purge, update, upgrade, dist-upgrade ...etc voir **man aptitude** pour la liste exhaustive des commandes et /usr/share/doc/aptitude/README).


Aptitude s'utilise en ligne de commande ou via une interface en mode texte, dans ce dernier cas les commandes sont :


**Touche** --> **Action**\\ 

  ***F10** --> Menu > point de départ de toutes les actions, à explorer absolument ;-)\\ 
  ***?** --> Mise à jour des informations de l'archive de paquets\\
  ***+** -->Marque un paquet pour mise-à-jour ou installation\\ 
  ***-** --> Marque un paquet pour suppression (garde la configuration)\\ 
  ***_** --> Marque un paquet pour purge (supprime la configuration)\\ 
  ***=** --> Place un paquet en maintien\\ 
  ***U** --> Marque tous les paquets qui peuvent être mis à jour\\ 
  ***g**--> Téléchargement et installation des paquets sélectionnés\\ 
  ***q** --> Sortie de l'écran courant et sauvegarde des changements\\ 
  ***x** --> Sortie de l'écran courant sans sauvegarde\\ 
  ***Enter** --> Visualisation d'information sur un paquet\\ 
  ***C** --> Visualisation des changements d'un paquet\\ 
  ***|** --> Change la limite des paquets affichés\\ 
  ***/** --> Recherche la première occurence\\ 
  ***\** --> Répète la dernière recherche\\ 

La gestion fine des dépendances peut être modifiée dans Menu(F10)--> Options --> Gestion des dépendances


{{ presentation:aptitude.png?580 }}



Aptitude enregistre toutes ses actions dans /var/log/aptitude ce qui rend le suivit et l'analyse facile.


Apt et Aptitude utilisent la même base de donné, ils peuvent être considérés comme des alternatives, et on peut penser qu'aptitude deviendra doucement le choix par défaut.


====DPKG : la gestion de bas niveau====

Lorsque l'on utilise apt ou aptitude ceux-ci font appel à une commande plus élémentaire : dpkg. Vous aurez besoin d'invoquer cette commande si vous voulez installer un paquet téléchargé sur Internet\\ **dpkg -i chemin_vers_le_paquet_.deb**
pour résoudre des cas épineux de paquet "qui veut pas" en raison de dépendances cassées, dans ce cas les options  --ignore-depends, --force-depends sont les derniers recours. :!: Ces commandes relève du cas désespéré, pas de l'usage normal, il est __nécessaire__ de résoudre les problèmes de dépendances !

Dpkg a un autre intérêt qui est de permettre la configuration des paquets qui utilisent "debconf" (l'outil de configuration de Debian). Si par exemple vous avez un problème d'affichage et une console au boot au lieu de l'interface graphique (suite à une mise à jour des pilotes de carte graphique...) la commande **dpkg-reconfigure -phigh xserver-xorg** pourrait vous sauver la vue ;-) .
De même en cas de changement de périphériques d'entrée/sortie/affichage un **dpkg-reconfigure xserver-xorg** lancera un dialogue vous permettant de choisir des options pour l'ensemble de vos périphériques gérés par xorg.
De la même façon **dpkg-reconfigure debconf** permet de choisir le mode de dialogue de debconf.

{{ presentation:dpkgreconfigure.png?580 }}

dpkg est donc un outils très puissant, qui permet des manoeuvres de la "dernière chance" à qui sait s'en servir (y compris d'installer des paquets sur un système qui ne démarre plus depuis un live cd !). Il sait également gérer les sources avec dpkg-source et assister la création de paquet avec dpkg-buildpackage.
À garder en post-it pour le jour où...

Dpkg est donc très utile, surtout quand ça va mal :-( , il est de toute façon utilisé en arrière plan par Apt et Aptitude. En revanche il n'est pas conseillé de l'utiliser pour la gestion normale des paquets.


====dselect : la convivialité oubliée...====
FIXME


====Wajig : en route vers le futur====

FIXME

sources d'inspirations : [[http://www.togaware.com/linux/survivor/Wajig_Overview.html|ici]] et [[http://www.andesi.org/index.php?node=127|là]]


TODO : Alien, la création de paquets .deb et les passerelles avec les .rpm